package main

import (
	"fmt"
	"math"
	"strings"
)

func main1() {
	/*
		float64的类型的最大值的小数点的范围约为0.7976931348623157e+308
		float32的类型的最大值的小数点的范围约为0.4028234663852886e+38
	*/
	fmt.Println(math.MaxFloat32)
	fmt.Println(math.MaxFloat64)

	a := 1.0
	fmt.Println(a)
	b := float64(1)
	fmt.Println(b)

	c := 1
	d := 1.0
	var e float64
	//e = c + d//这种会直接进行报错，我们需要将数据类型提升
	e = float64(c) + d
	fmt.Println(e)

	//无穷
	fmt.Println(math.Inf(1) > 100000000000000000000.1) //正无穷，不论什么数都没有比指定数小
	fmt.Println(math.Inf(-1) < -0.0000000002)          //负无穷，不论什么数都没有比指定数大

}

func main2() {
	//字符型：
	//1.	在 Go 中，字符的本质是一个整数，直接输出时，是该字符对应的 UTF-8 编码的码值
	//2.	可以直接给某个变量赋一个数字，然后按格式化输出时 %c ，会输出该数字对应的 unicode 字符
	//3.	字符类型是可以进行运算的，相当于一个整数，因为它都对应有 Unicode 码。
	var c byte
	c = 'a'
	fmt.Println(c)
	fmt.Printf("%c\n", c)
	c = 97
	fmt.Println(c)
	fmt.Printf("%c\n", c)

	var b rune
	b = '怡'
	fmt.Println(b)        //打印的是解字的在acsii码表中对应的值
	fmt.Printf("%c\n", b) //%c表示的是字符类型
}

// 字符串的函数
func main() {
	//统计字符出现的函数
	fmt.Println(strings.Count("01010010111100000111", "1"))

	//去除字符串两端的空格
	fmt.Println(strings.TrimSpace("    why    "))

	//判断字符串从后往前的部分子串与原本字符串的从后往前的部分是否匹配
	fmt.Println(strings.HasSuffix("Why likes her", "likes her"))

	//判断字符串从前往后的部分子串与原本字符串的从前往后的部分是否匹配
	fmt.Println(strings.HasPrefix("Why likes her", "Why"))

	//判断字符串中是否包含目标子串
	fmt.Println(strings.Contains("Why likes her", "Why"))

	//替换全部的
	fmt.Println(strings.ReplaceAll("Why likes her", "Why likes her", "XXXXXXXXX"))

	//替换指定数量的
	fmt.Println(strings.Replace("Why likes her", "h", "n", 3))

	//转换成大写
	fmt.Println(strings.ToUpper("wbyabc"))

	//转换成小写
	fmt.Println(strings.ToLower("WHYABC"))

	//转换成标题
	fmt.Println(strings.ToTitle("How are you"))
}
